package co.edu.udea.iw.dao;

import java.util.List;

import co.edu.udea.iw.dto.TipoDocumento;
import co.edu.udea.iw.exception.IWDaoException;

/**
 * Interface que define los metodos que va a proveer el dao de Tipo de Documento
 * 
 * @author Santiago Ruiz
 * @author Bladimir Velez
 *
 */
public interface TipoDocumentoDAO {
	/**
	 * Entrega los datos de un tipo de documento dado su identificador
	 * 
	 * @param tipoD
	 *            String que identificador del tipo de documento
	 * @return instancia con los datos del tipo de documento obtenido, si no
	 *         existe el tipo de documento retorna null.
	 * @throws IWDaoException
	 */
	public TipoDocumento obtenerTipoDocumento(String tipoD)
			throws IWDaoException;

	/**
	 * Entrega la lista de todos los tipo de documento existentes en base de
	 * datos
	 * 
	 * @return lista tipo de documentos
	 * @throws IWDaoException
	 */
	public List<TipoDocumento> obtenerTiposDocumentos() throws IWDaoException;

	/**
	 * Agrega un tipo de documento
	 * 
	 * @param tipo
	 *            de documento tipo de documento a agregar
	 * @return void
	 * @throws IWDaoException
	 */
	public void agregarTipoDocumento(TipoDocumento tipoDocumento)
			throws IWDaoException;

	/**
	 * Elimina un tipo de documento
	 * 
	 * @param tipo
	 *            de documento tipo de documento a eliminar
	 * @return void
	 * @throws IWDaoException
	 */
	public void eliminarTipoDocumento(TipoDocumento tipoDocumento)
			throws IWDaoException;

	/**
	 * Actualiza un tipo de documento
	 * 
	 * @param tipo
	 *            de documento tipo de documento a actualizar
	 * @return void
	 * @throws IWDaoException
	 */
	public void actualizarTipoDocumento(TipoDocumento tipoDocumento)
			throws IWDaoException;

}
